package service

import (
	"gitee.com/swsk33/server-demo/dao"
	"gitee.com/swsk33/server-demo/dataobject"
	"gitee.com/swsk33/server-demo/model"
)

// CharacterService 角色服务对象
type CharacterService struct {
	dao *dao.CharacterDAO
}

// NewCharacterService 角色服务对象的构造函数（提供者）
func NewCharacterService(dao *dao.CharacterDAO) *CharacterService {
	return &CharacterService{dao: dao}
}

// Add 新增角色
func (service *CharacterService) Add(char *dataobject.Character) *model.Result {
	// 字段校验
	if char.Name == "" || char.Nickname == "" {
		return model.CreateFailedResult("角色名称或者昵称不能为空！")
	}
	if char.ID != 0 {
		return model.CreateFailedResult("增加时请勿指定ID！")
	}
	// 调用DAO层完成添加
	service.dao.Insert(char)
	return model.CreateNullSuccessResult("添加角色成功！")
}

// Delete 删除角色
func (service *CharacterService) Delete(id int) *model.Result {
	// 调用DAO层
	service.dao.DeleteById(id)
	return model.CreateNullSuccessResult("删除角色成功！")
}

// Update 修改角色
func (service *CharacterService) Update(char *dataobject.Character) *model.Result {
	// 参数校验
	if char.ID == 0 {
		return model.CreateFailedResult("ID字段不能为空！")
	}
	// 调用DAO层
	service.dao.Update(char)
	return model.CreateNullSuccessResult("更新角色完成！")
}

// Get 根据ID查找角色
func (service *CharacterService) Get(id int) *model.Result {
	// 先判断是否存在
	if !service.dao.IsCharacterExistsById(id) {
		return model.CreateFailedResult("角色不存在！")
	}
	// 执行查询
	char := service.dao.FindById(id)
	return model.CreateSuccessResult("查询完成！", char)
}

// GetAll 获取全部角色
func (service *CharacterService) GetAll() *model.Result {
	// 执行查询
	char := service.dao.FindAll()
	return model.CreateSuccessResult("查询全部完成！", char)
}